﻿using System;
using System.Linq;
using System.Web.UI.WebControls;
using Servicios.Business.Modulos;
using Servicios.Business.Proveedores;
using System.Collections.Generic;

public partial class RegistroMaterialBibliografico : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (!string.IsNullOrEmpty(Request.QueryString["mbID"]))
            {
                var id = int.Parse(Request.QueryString["mbID"]);
                mvRegistro.SetActiveView(vwRegExistencias);
                lblMaterialBibliografico.Text = new MaterialBibliograficoProvider().GetById(id).Titulo;
                TipoPrestamoProvider tpp = new TipoPrestamoProvider();
                WebControlHelper.ListControlDataBind(ddlTipoPrestamo, tpp.GetAll(), "ID", "Nombre",
                                                     "Seleccione un tipo de préstamo");
                var Estados = new[] {
                new {Habilitado = "Habilitado", ID = true},
                new{ Habilitado = "Inhabilitado",ID = false}};
                WebControlHelper.ListControlDataBind(ddlHabilitado, Estados, "ID", "Habilitado");
            }
            else
            {
                mvRegistro.SetActiveView(vwRegMatBib);
                TipoMatBibliograficoProvider tmb = new TipoMatBibliograficoProvider();
                WebControlHelper.ListControlDataBind(ddlTipoMB, tmb.GetAll(), "ID", "Nombre",
                                                     "Seleccione un tipo de material bibliografico");
                PaisProvider p = new PaisProvider();
                WebControlHelper.ListControlDataBind(ddlPais, p.GetAll(), "ID", "Nombre", "Seleccione un país");
                IdiomaProvider i = new IdiomaProvider();
                WebControlHelper.ListControlDataBind(ddlIdioma, i.GetAll(), "ID", "Nombre", "Seleccione un idioma");
                EditorialProvider ed = new EditorialProvider();
                WebControlHelper.ListControlDataBind(ddlEditorial, ed.GetAll(), "ID", "Nombre",
                                                     "Seleccione un editorial");
            }
        }
    }

    protected void btnRegistrar_Click(object sender, EventArgs e)
    {
        MaterialBibliograficoProvider mbp = new MaterialBibliograficoProvider();
        var mb = mbp.CreateEntity();
        mb.Titulo = txtTitulo.Text;
        mb.AnioPublicacion = int.Parse(txtAnioPublicacion.Text);
        mb.Clasificacion = txtClasificacion.Text;
        mb.Descripcion = txtDescripcion.Text;

        List<int> autoresId = GetAutoresId();
        Registro.RegistrarMaterialBibliografico(mb, int.Parse(ddlTipoMB.SelectedValue), int.Parse(ddlPais.SelectedValue), int.Parse(ddlIdioma.SelectedValue), int.Parse(ddlEditorial.SelectedValue), autoresId.ToArray());

        WebControlHelper.CleanTextBoxes(txtTitulo, txtAnioPublicacion, txtClasificacion, txtDescripcion);
        WebControlHelper.ListControlSetDefault(ddlEditorial, ddlIdioma, ddlPais, ddlTipoMB);
        lstAutores.Items.Clear();
    }

    private List<int> GetAutoresId()
    {
        List<int> ausid = new List<int>();
        for (int i = 0; i < lstAutores.Items.Count; i++)
        {
            ausid.Add(int.Parse(lstAutores.Items[i].Value));
        }
        return ausid;
    }

    protected void btnCancelar_Click(object sender, EventArgs e)
    {

    }

    protected void btnAddAutor_Click(object sender, EventArgs e)
    {
        lstAutores.Items.Add(new ListItem(txtAutor.Text, txtAutorValue.Value));
    }

    protected void btnEliminarAutor_Click(object sender, EventArgs e)
    {
        if (lstAutores.SelectedIndex != -1)
        {
            lstAutores.Items.RemoveAt(lstAutores.SelectedIndex);
        }
    }

    protected void btnRegistrarEditorial_Click(object sender, EventArgs e)
    {
        var edProv = new EditorialProvider();
        var ed = edProv.CreateEntity();
        ed.Nombre = txtEditorialNombre.Text;
        edProv.Insert(ed);
        WebControlHelper.ListControlDataBind(ddlEditorial, edProv.GetAll(), "ID", "Nombre", "Seleccione un editorial");
    }

    protected void btnRegistrarAutor_Click(object sender, EventArgs e)
    {
        AutorProvider auProv = new AutorProvider();
        var au = auProv.CreateEntity();
        au.Apellidos = txtAutorApellidos.Text;
        au.Nombres = txtAutorNombres.Text;
        au.Descripcion = txtAutorDescripcion.Text;
        auProv.Insert(au);
    }

    protected void btnAddExistenciaToList_Click(object sender, EventArgs e)
    {
        if (!string.IsNullOrEmpty(Request.QueryString["mbID"]))
        {
            var id = int.Parse(Request.QueryString["mbID"]);

            ExistenciasProvider exp = new ExistenciasProvider();
            var existencia = exp.CreateEntity();
            existencia.FechaIngreso = DateTime.Now;
            existencia.NumeroIngreso = txtIngreso.Text;
            existencia.CodigoBarras = txtCodBarras.Text;
            existencia.Habilitado = bool.Parse(ddlHabilitado.SelectedValue);
            existencia.Descripcion = txtDescripcionExist.Text;
            Registro.RegistrarExistencia(id, existencia, int.Parse(ddlTipoPrestamo.SelectedValue));

            lvExistencias.DataBind();
        }
        else
        {
            //TODO: poner mensaje de error
        }
    }
}